#ifndef __LUNA_Common_h__
#define __LUNA_Common_h__

#if defined( LUNA_NONCLIENT_BUILD )
	#define LunaExport __declspec( dllexport )
#else
	#define LunaExport __declspec( dllimport )
#endif

#pragma warning (disable : 4251)

#include <assert.h>
#include <exception>
#include <string>
#include <sstream>
#include <list>
#include <vector>
#include <map>
#include <algorithm>

namespace LUNA
{
	class LunaExport SoundManager;
	class LunaExport ISoundFactory;
	class LunaExport ISound;
	struct LunaExport VorbisSystem;
	
	typedef std::list<std::string> StringList;
	
	enum SoundPlayState
	{
		SPS_NULL,
		SPS_PLAY,
		SPS_PAUSE,
		SPS_STOP
	};
}

#define THROW_RT( x ) { std::stringstream __ss; __ss << __FUNCTION__ << ": " << x; throw std::runtime_error( __ss.str().c_str() ); }

#endif

